package com.zjmzxfzhl.modules.app.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zjmzxfzhl.common.core.base.BaseEntity;
import com.zjmzxfzhl.common.core.validator.constraints.LengthForUtf8;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

import com.zjmzxfzhl.modules.app.form.AppDocVo;
import com.zjmzxfzhl.modules.app.form.DocFilePath;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 【】实体类
 * 
 * @author 张森荣
 */
@Data
@TableName("T_APP_TEMPLATE")
public class AppTemplate extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId
//    @NotNull
    @LengthForUtf8(max = 32)
    private String tempId;

    /**
     * 任务名称
     */
    @NotNull
    @LengthForUtf8(max = 100)
    private String name;

    /**
     * 上级机构ID
     */
    @LengthForUtf8(max = 32)
    private String parentTempId;

    /**
     * 任务类型
     */
    @LengthForUtf8(max = 2)
    private String tempType;

    /**
     * 机构级次
     */
//    @NotNull
    @LengthForUtf8(max = 2)
    private String tempLevel;

    /**
     * 组织机构路径
     */
//    @NotNull
    @LengthForUtf8(max = 255)
    private String tempLevelCode;

    /**
     * 是否叶子节点
     */
    @LengthForUtf8(max = 1)
    private String isLeaf;

    /**
     * 任务描述
     */
    private String content;

    /**
     * 预计完成工时
     */
    @Max(9999)
    private Integer taskTime;

    /**
     * 目录ID
     */
    @LengthForUtf8(max = 32)
    private String dirId;

    /**
     * 矩阵
     */
//    @NotNull
    @LengthForUtf8(max = 2)
    private String matrix;

    /**
     * 计划开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 计划完成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 所属机构ID
     */
    @LengthForUtf8(max = 32)
    private String orgId;

    @TableField(exist = false)
    private List<AppTag> tags = new ArrayList<>();
    @TableField(exist = false)
    private List<AppDoc> docList =new ArrayList<>();

    /**
     * 添加时传入附件
     */
    @TableField(exist = false)
    private List<DocFilePath> docFilePath= new ArrayList<>();
}